home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / graphics / tree / mdoc.l < prev    next >
Text File  |  1993-09-01  |  1KB  |  94 lines

  1. %{
  2. /* mdoc: utility to add \tree examples to "use" document for tree
  3.  *        Greg Lee, July 1990
  4.  */
  5. char *buf, *bufp;
  6. char *line[100];
  7. int count = 0, last = 0, i;
  8. #define ADDCH(c) *bufp++ = c
  9. #define ADDS(s) strcpy(bufp,s); bufp += yyleng
  10. %}
  11.  
  12. %s X
  13.  
  14. %%
  15.  
  16. ^"\\xtwo"[ \t\n]+ {
  17.     ECHO;
  18.     last = 2;
  19.     line[0] = bufp;
  20.     BEGIN(X);
  21. }
  22.  
  23. ^"\\xthree"[ \t\n]+ {
  24.     ECHO;
  25.     last = 3;
  26.     line[0] = bufp;
  27.     BEGIN(X);
  28. }
  29.  
  30. ^"\\xfour"[ \t\n]+ {
  31.     ECHO;
  32.     last = 4;
  33.     line[0] = bufp;
  34.     BEGIN(X);
  35. }
  36.  
  37. ^"\\x"[ \t\n]+ {
  38.     ECHO;
  39.     last = 1;
  40.     line[0] = bufp;
  41.     BEGIN(X);
  42. }
  43. <X>"$" {
  44.     printf("\\$");
  45.     ADDCH('$');
  46. }
  47. <X>"\\ " {
  48.     printf("\\xbs{\\ }");
  49.     ADDS(yytext);
  50. }
  51. <X>\\[a-z]+ {
  52.     printf("\\xbs{%s}", yytext+1);
  53.     ADDS(yytext);
  54. }
  55. <X>\\. {
  56.     printf("\\xbs{%c}", yytext[1]);
  57.     ADDS(yytext);
  58. }
  59. <X>: {
  60.     ECHO;
  61.     ADDCH(0);
  62.     count++;
  63.     line[count] = bufp;
  64. }
  65. <X>"." {
  66.     ECHO;
  67.     if (count < last) ADDCH('.');
  68.     else {
  69.     ADDCH(0);
  70.  
  71.     printf("\n\\smallbreak{\\parindent=.5in\\par");
  72.     printf("\\hskip-.2in\\it gives:\\tfont\n\\tree ");
  73.     for (i = 0; i < count; i++)
  74.         printf("%s\n", line[i]);
  75.     printf("}\\smallbreak\n");
  76.  
  77.     count = last = 0;
  78.     bufp = buf;
  79.     BEGIN(0);
  80.     }
  81. }
  82. <X>. {
  83.     ECHO;
  84.     ADDCH(yytext[0]);
  85. }
  86.  
  87. %%
  88. main()
  89. {    char *malloc();
  90.  
  91.     buf = bufp = malloc(BUFSIZ);
  92.     yylex();
  93. }
  94.